home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / system / mail / transpor / ifmail23.z / ifmail23 / ifmail / iflib / signal.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-05-08  |  502 b   |  26 lines

  1. /*
  2.  * signal() for BSD systems like SUNOS where a signal not automatically
  3.  * interrupts a read() system call.  Contributed by Martin Junius.
  4. */
  5.  
  6. #include <signal.h>
  7.  
  8. void (*signal(sig, func))()
  9. int sig;
  10. void (*func)();
  11. {
  12.    struct sigaction sa, sa_old;
  13.  
  14.    sa.sa_mask    = 0;
  15.    sa.sa_handler = func;
  16. #if defined(SA_INTERRUPT) && defined(SA_RESETHAND)
  17.    sa.sa_flags   = SA_INTERRUPT | SA_RESETHAND;
  18. #else
  19.    sa.sa_flags   = 0;
  20. #endif
  21.  
  22.    sigaction(sig, &sa, &sa_old);
  23.  
  24.    return sa_old.sa_handler;
  25. }
  26.